The invention relates to a method of using a data storage array arrangement of the kind used to store data for a number of independent end users or hosts and to a controller for such a data storage arrangement.
It is known in the prior art for companies and other organisations with computer systems, known as hosts, to out source the bulk storage of data from such systems to a storage service provider. These organisations obtain the benefit that they do not need to invest capital in large arrays of hard discs or to employ highly paid specialists to manage such arrays.
The storage service providers have large arrays of hard discs. The providers partition the total storage capacity of the hard disc arrays into a number of areas, known as Logical Units (LUNs), with a LUN being a particular disc, plurality of discs or part of a particular disc. Thus each LUN has a defined physical location within the disc array, and is in general a contiguous area of the array.
When a host rents a certain volume of storage capacity the relevant number of LUNs are assigned to that host, and the host may aggregate them into volumes. It is rare for a LUN to be used to its full capacity to store host information. However, once the size of a LUN is defined at the outset it is difficult to redefine it to a larger capacity without removal and reinsertion of all the data, so increasing the size of a LUN is generally avoided by allocating enough storage capacity at the outset to exceed predicted maximum usage requirements. Also, information technology (IT) managers tend to avoid full volumes as this can cause its own problems. The net result may be a significant amount of disc space, which is allocated to particular hosts, on one or more of the discs in the service provider's disc array remaining unused by the respective hosts and inaccessible to other hosts. Thus an expensive resource is under utilised.
Furthermore, in recent years the storage service provider business has become very competitive, with end-users expecting to pay lower and lower amounts for the same storage capacity. Hence being able to provide the service in a more cost effective manner than in the prior art would give a service provider a significant advantage.
It is an aim of the present invention to provide a method of usage of such data storage arrays which mitigates the above described problems, and an array controller for such data storage arrays.
According to a first aspect of the present invention there is provided a method of utilisation of a data storage array, having a total physical storage capacity, comprising the steps of allocating to the data storage array a number of virtual areas with virtual addresses of storage locations within the virtual areas, and allocating physical addresses to the virtual addresses only as and when data is to be written to the respective virtual addresses.
The total capacity of the virtual areas allocated to the data storage array may exceed the total physical capacity of the data storage array.
The data stored in a virtual area may be dispersed throughout the data storage array. Alternatively, the data stored in a virtual area may be dispersed around a subset of the physical capacity of the data storage array, the subset having a greater storage capacity than the virtual area.
Preferably if an attempt is made to read from a virtual address to which no data has yet been written and hence no physical address allocated a fixed data pattern is returned. The fixed data pattern may conveniently be 00000000.
The virtual areas may be Virtual Logical Units (VLUNs)
The data storage array typically comprises a plurality of discrete storage elements. The discrete storage elements may be hard discs.
According to a second aspect of the present invention, an array controller for storing data in a data storage array having a total physical storage capacity is configured such that it allocates a required capacity of storage in virtual area(s) to each host wishing to store data in the array. In response to a host exporting data for storage to which it has allocated a virtual address of a virtual area, the controller maps that virtual address to a physical address within the data storage array, and causes the data to be written to that physical address.
The total capacity of the virtual areas allocated by the array controller to a data storage array may exceed the total physical capacity of the data storage array.
Preferably the array controller is configured such that the virtual addresses of a host are mapped to physical addresses dispersed throughout the data storage array. Alternatively the array controller maps the virtual addresses of a host to physical addresses dispersed around a subset of the storage capacity of the data storage array. The subset has a greater storage capacity than the virtual area.
According to a third aspect of the present invention a data storage array includes an array controller in accordance with the second aspect of the invention.